// ajax 向服务器请求数据
// 1 创建一个请求  new 
// 2 打开连接     open
// 3 发送连接     send
//    3.1 携带数据  
//    3.2 方式   get / post   区别
// 4 等待  change = function(){}



// option 对象
function ajax(options) {
    const {
        type,
        path,
        data = {},
        dataType = 'json',
        successCB,
        failCB
    } = options;

    let params = '';
    for (let key in data) {
        params += `${key}=${data[key]}&`;
    }
    // 去掉最后面的一个多余的&
    params = params.substring(0, params.length - 1);

    const xhr = new XMLHttpRequest();
    // 判断数据请求的方式
    if (type == 'get') {
        xhr.open(type, path + '?' + params, true);
        xhr.send()
    } else {
        xhr.open(type, path, true);
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
        xhr.send(params);
    }
    xhr.onreadystatechange = () => {
        try {
            if (xhr.readyState == 4 && xhr.status == 200) {
                let data = xhr.responseText;
                if (dataType == 'json') {
                    data = JSON.parse(data);
                }
                successCB && successCB(data);
            }
        }
        // 如果ajax报错 ，这个时候程序依然会向下执行，但是这个错误可以被捕捉到
        catch (err) {
            failCB && failCB(err)
        }
    }
}



// 查询地址栏的数据参数
function queryString(name) {
    var href = location.search.replace('?', '');
    var arr = href.split('&');
    arr = arr.map(val => {
        return {
            name: val.split('=')[0],
            value: val.split('=')[1]
        }
    })
    var res = arr.filter(val => val.name === name)[0];
    if (res) {
        return res.value
    } else {
        return ''
    }
}


function $(e) {
    return document.querySelector(e)
}

function randomcode(txt='') {
 //numarr用来存储数字验证码，bigarr用来存储大写字母验证码，smallarr用来存储大写字母验证码
    //arr用来存储所有的验证码,random用来存放生成的验证码
    var numarr = [],
        bigarr = [],
        smallarr = [],
        arr = [],
        random = [];

    //给数字验证码赋值
    for (i = 0; i < 10; i++) {
        numarr[i] = i;
    }
    //给大写字母验证码赋值
    for (i = 65; i <= 90; i++) {
        bigarr.push(String.fromCharCode(i));
    }
    //给小写字母验证码赋值
    for (i = 97; i <= 122; i++) {
        smallarr.push(String.fromCharCode(i));
    }
    //给所有验证码赋值
    arr = arr.concat(numarr, bigarr, smallarr);

    // console.log(numarr, bigarr, smallarr, arr)
    //生成验证码
    random[0] = numarr[parseInt(Math.random() * 10)];
    random[1] = bigarr[parseInt(Math.random() * 26)];
    random[2] = smallarr[parseInt(Math.random() * 26)];
    random[3] = arr[parseInt(Math.random() * 62)];
    //让验证码随机排序
    random.sort(function () {
        return 0.5 - Math.random()
    })
    //将验证码变成字符串形式并传值给span
    var res = '';
    for (i = 0; i < random.length; i++)
        res += random[i];
    document.getElementById('random').innerHTML = res;

    //将验证码转换成大写
    res = res.toUpperCase();
      return res;

    //将输入的验证码传值给变量txt
    // var txt = document.getElementById('putrandom').value;
    //将txt转换为大写的形式
    // txt = txt.toUpperCase();
    //   console.log(txt);
    //   console.log(res)

    // if (txt == res)
    //     return true
    // else
    //     // alert('输入错误');
    //     return false

}